package com.company.sendemo.basics.ycDataStore;

public class StringStorage {
    /**
     * 常量池 存储 类信息 常量 静态变量 编译器编译后的代码
     * */
    /**
     * String.intern()是一个Native(原生)方法，底层调用C++的 StringTable::intern 方法
     * 用 intern 方法时，如果常量池中已经该字符串，则返回池中的字符串；否则将此字符串添加到常量池中，并返回字符串的引用
     * */
    //TODO
    public static void main(String[] args) {
        // 使用当前本地区域对象（Locale.getDefault()），制定字符串格式和参数生成格式化的字符串
//        String String.format(String fmt, Object... args);
        // 自定义本地区域对象，制定字符串格式和参数生成格式化的字符串
//        String String.format(Locale locale, String fmt, Object... args);

        int one = 123456789;
        double two = 123333.789;
        String s = String.format("第一个参数：%,d 第二个参数：%,.2f", one, two);
        System.out.println(s);

        String s1 = new StringBuilder().append("String").append("Test").append(String.format("'&d&s',","format", "*")).toString();
        System.out.println(s1.intern());
        System.out.println(s1);
        System.out.println(s1.intern() == s1);
        float s3 = 4.5F;
        System.out.println(String.valueOf(s3));

        String s2 = new StringBuilder().append("ja").append("va").toString();
        System.out.println(s2.intern());
        System.out.println(s2);
        System.out.println(s2.intern() == s2);
    }
}
